#ifndef		__ENTITY_MANAGER_INTERFACE__
#define		__ENTITY_MANAGER_INTERFACE__


#include "Data/DataIf.h"
#include "Gene/GeneHostIf.h"
#include "Entity/EntityIf.h"
#include "EntityVisitorIf.h"
#include "Entity/EntityBuilderIf.h"

//
//	Entity Create Data
//	
//
class TCOM_API  IEntityManager : public IGeneHost
{
public:
	virtual	~IEntityManager()	{}

	//
	//	get entity by entity id
	//
	virtual IEntity*	getEntity(int nID)	=	0;

	//
	//	add/remove entities
	//
	virtual bool	addEntity(int nID, IEntity*  e)	=	0;
	virtual bool	addEntity(int nID, IEntityBuilder* b) = 0;
	virtual bool	rmvEntity(int nID, IEntity*& e) =	0;

	//
	//	visit all entities in current manager
	//
	virtual void	forEach(IEntityVisitor& v)	=	0;
};

#endif
